﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SistemaPetShop.Negocio;

namespace SistemaPetShop.Forms
{
    public partial class cadFornecedor : Form
    {
        Fornecedor f = new Fornecedor();
        public cadFornecedor()
        {
            InitializeComponent();
            carregarFornecedor();
            desabilitaTelaCadastro();
        }
        
         private void carregarFornecedor()
         {
             GridViewFornecedor.DataSource = f._ListaFornecedor();
         }

         private void desabilitarBotoes()
         {
             btnNovo.Visible = false;
             btnEditar.Visible = false;
             btnExcluir.Visible = false;
             btnSair.Visible = false;
             btnSalvar.Visible = true;
             btnCancelar.Visible = true;
         }

         private void habilitaBotoes()
         {
             btnNovo.Visible = true;
             btnEditar.Visible = true;
             btnExcluir.Visible = true;
             btnSair.Visible = true;
             btnSalvar.Visible = false;
             btnCancelar.Visible = false;
         }



         private void desabilitaTelaCadastro()
         {
             txtBairro.Enabled = false;
             txtCep.Enabled = false;
             txtCidade.Enabled = false;
             txtEmail.Enabled = false;
             txtEstado.Enabled = false;
             txtLogradouro.Enabled = false;
             txtNumero.Enabled = false;
             txtRepresentante.Enabled = false;
             txtSite.Enabled = false;
             txtobservacoes.Enabled = false;
             cbotLogradouro.Enabled = false;
             txttelefone1.Enabled = false;
             txttelefone2.Enabled = false;
             txtcelular.Enabled = false;
             txtFax.Enabled = false;
             cboOperadora.Enabled = false;
             btnPesquisaCep.Enabled = false;
             txtcnpj.Enabled = false;
             txtRazaoSocial.Enabled = false;
         }

         private void habilitaTelaCadastro()
         {
             txtBairro.Enabled = true;
             txtCep.Enabled = true;
             txtCidade.Enabled = true;
             txtEmail.Enabled = true;
             txtEstado.Enabled = true;
             txtLogradouro.Enabled = true;
             txtNumero.Enabled = true;
             txtRepresentante.Enabled = true;
             txtSite.Enabled = true;
             txtobservacoes.Enabled = true;
             cbotLogradouro.Enabled = true;
             txttelefone1.Enabled = true;
             txttelefone2.Enabled = true;
             txtcelular.Enabled = true;
             txtFax.Enabled = true;
             cboOperadora.Enabled = true;
             btnPesquisaCep.Enabled = true;
             txtcnpj.Enabled = true;
             txtRazaoSocial.Enabled = true;
         }



         private void limpaTelaCadastro()
         {
             txtBairro.BackColor = System.Drawing.Color.White;
             txtCep.BackColor = System.Drawing.Color.White;
             txtCidade.BackColor = System.Drawing.Color.White;
             txtEmail.BackColor = System.Drawing.Color.White;
             txtEstado.BackColor = System.Drawing.Color.White;
             txtLogradouro.BackColor = System.Drawing.Color.White;
             txtNumero.BackColor = System.Drawing.Color.White;
             txtRepresentante.BackColor = System.Drawing.Color.White;
             txtSite.BackColor = System.Drawing.Color.White;
             txtobservacoes.BackColor = System.Drawing.Color.White;
             cbotLogradouro.BackColor = System.Drawing.Color.White;
             txttelefone1.BackColor = System.Drawing.Color.White;
             txttelefone2.BackColor = System.Drawing.Color.White;
             txtcelular.BackColor = System.Drawing.Color.White;
             txtFax.BackColor = System.Drawing.Color.White;
             cboOperadora.BackColor = System.Drawing.Color.White;
             txtcnpj.BackColor = System.Drawing.Color.White;
             txtIdFornecedor.BackColor = System.Drawing.Color.White;
             txtRazaoSocial.BackColor = System.Drawing.Color.White;
             txtBairro.Text = "";
             txtCep.Text = "";
             txtCidade.Text = "";
             txtEmail.Text = "";
             txtEstado.Text = "";
             txtLogradouro.Text = "";
             txtNumero.Text = "";
             txtRepresentante.Text = "";
             txtSite.Text = "";
             txtobservacoes.Text = "";
             cbotLogradouro.Text = "";
             txttelefone1.Text = "";
             txttelefone2.Text = "";
             txtcelular.Text = "";
             txtFax.Text = "";
             cboOperadora.Text = "";
             txtcnpj.Text = "";
             txtIdFornecedor.Text = "";
             txtRazaoSocial.Text = "";
         }


         public void carregaTelaCadastroFornecedor()
         {
             DataTable dt = new DataTable();
             dt = f._EditarFornecedor(Convert.ToInt32(GridViewFornecedor.CurrentRow.Cells[0].Value));
             txtRazaoSocial.Text = dt.Rows[0]["razaoSocial"].ToString();
             txtBairro.Text = dt.Rows[0]["bairro"].ToString();
             txtcelular.Text = dt.Rows[0]["celular"].ToString();
             txtCep.Text = dt.Rows[0]["cep"].ToString();
             txtCidade.Text = dt.Rows[0]["cidade"].ToString();
             txtcnpj.Text = dt.Rows[0]["cnpj"].ToString();
             txtEmail.Text = dt.Rows[0]["email"].ToString();
             txtEstado.Text = dt.Rows[0]["uf"].ToString();
             txtFax.Text = dt.Rows[0]["fax"].ToString();
             txtIdFornecedor.Text = dt.Rows[0]["idFornecedor"].ToString();
             txtLogradouro.Text = dt.Rows[0]["Endereco"].ToString();
             txtNumero.Text = dt.Rows[0]["Numero"].ToString();
             txtobservacoes.Text = dt.Rows[0]["observacao"].ToString();
             txtRepresentante.Text = dt.Rows[0]["NomeContato"].ToString();
             txtSite.Text = dt.Rows[0]["Site"].ToString();
             txttelefone1.Text = dt.Rows[0]["Fone1"].ToString();
             txttelefone2.Text = dt.Rows[0]["Fone2"].ToString();
             cboOperadora.Text = dt.Rows[0]["Operadora"].ToString();
             cbotLogradouro.Text = dt.Rows[0]["TipoLogradouro"].ToString();
             txtDtCadastro.Text = dt.Rows[0]["DataCadastro"].ToString();
         }




         public bool validaCamposTelaCadFornecedor()
         {
             bool ret = true;
             if (txtRazaoSocial.Text == "" || txtRazaoSocial.TextLength < 5)
             {
                 txtRazaoSocial.BackColor = System.Drawing.Color.Red;
                 ret = false;
             }

             return ret;

         }

         // private void GridViewFornecedor_CellClick(object sender, DataGridViewCellEventArgs e)
         // {
         //     carregaTelaCadastroFornecedor();
         // }

         // private void btnSair_Click(object sender, EventArgs e)
         // {
         //     this.Close();
         // }




        private void tabPage1_Click(object sender, EventArgs e)
        {

        }

        private void cadFornecedor_Load(object sender, EventArgs e)
        {

        }

        private void txtCelular_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {

        }

        private void tabPage2_Click(object sender, EventArgs e)
        {

        }

        private void txtcep_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {

        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            limpaTelaCadastro();
            desabilitarBotoes();
            habilitaTelaCadastro();
            tabControl1.SelectedTab = tabPage2;
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            bool ret = validaCamposTelaCadFornecedor();

            if (ret == false)
            {
                MessageBox.Show("É necessário o preenchimento correto de todos os campos que estão em vermelho", "Validação de Campos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
            else
            {
                // Cadastro um novo Fornecedor
                if (txtIdFornecedor.Text == "")
                {
                    bool retorno = f._InsereFornecedor(txtRazaoSocial.Text.ToString(), txtcnpj.Text.ToString(), txtCep.Text.ToString(),
                                   cbotLogradouro.Text.ToString(), txtLogradouro.Text.ToString(), txtNumero.Text.ToString(), txtBairro.Text.ToString(),
                                   txtCidade.Text.ToString(), txtEstado.Text.ToString(), txttelefone1.Text.ToString(), txttelefone2.Text.ToString(),
                                   txtcelular.Text.ToString(), cboOperadora.Text.ToString(), txtFax.Text.ToString(), txtRepresentante.Text.ToString(),
                                   txtEmail.Text.ToString(), txtSite.Text.ToString(), txtobservacoes.Text.ToString());
                    if (retorno == true)
                    {
                        MessageBox.Show("Fornecedor foi cadastrado com Sucesso");
                    }
                    else
                    {
                        MessageBox.Show("Não foi possivel cadastrar o fornecedor, se o problema persistir entre em contato com o Administrador do Sistema");
                    }


                }
                // Atualiza um determinado fornecedor
                else
                {
                    bool retorno = f._AtualizaFornecedor(txtRazaoSocial.Text.ToString(), txtcnpj.Text.ToString(), txtCep.Text.ToString(),
                        cbotLogradouro.Text.ToString(), txtLogradouro.Text.ToString(), txtNumero.Text.ToString(), txtBairro.Text.ToString(),
                        txtCidade.Text.ToString(), txtEstado.Text.ToString(), txttelefone1.Text.ToString(), txttelefone2.Text.ToString(),
                        txtcelular.Text.ToString(), cboOperadora.Text.ToString(), txtFax.Text.ToString(), txtRepresentante.Text.ToString(),
                        txtEmail.Text.ToString(), txtSite.Text.ToString(), txtobservacoes.Text.ToString(), txtIdFornecedor.Text.ToString());
                    if (retorno == true)
                    {
                        MessageBox.Show("Fornecedor Atualizado com sucesso");
                    }
                    else
                    {
                        MessageBox.Show("Não foi possivel atualizar o fornecedor, se o problema persistir entre em contato com o Administrador do Sistema");
                    }

                }
                carregarFornecedor();
                limpaTelaCadastro();
                habilitaBotoes();
                desabilitaTelaCadastro();
                tabControl1.SelectedTab = tabPage1;
            }
        }

        private void btnPesquisaCep_Click(object sender, EventArgs e)
        {
            string cep;

            cep = txtCep.Text.Replace("-", "");

            DataTable dt = new DataTable();
            dt = f._CarregarEndereco(cep);

            if (dt.Rows.Count != 0)
            {
                txtCidade.Text = dt.Rows[0]["LOC_NO"].ToString();
                txtBairro.Text = dt.Rows[0]["BAI_NO"].ToString();
                txtEstado.Text = dt.Rows[0]["UFE_SG"].ToString();
                txtLogradouro.Text = dt.Rows[0]["LOG_NO"].ToString();
                cbotLogradouro.Text = dt.Rows[0]["TLO_TX"].ToString();
            }
            else
            {
                MessageBox.Show("Cep não existe em nossa base", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }


        }

        private void btnPesquisar_Click(object sender, EventArgs e)
        {
            GridViewFornecedor.DataSource = f._ListaFornecedorEspecifico(txtPesquisa.Text, cboTipoPesquisa.Text);
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            limpaTelaCadastro();
            habilitaTelaCadastro();
            desabilitarBotoes();
            carregaTelaCadastroFornecedor();
            tabControl1.SelectedTab = tabPage2;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = MessageBox.Show("Deseja Cancelar a Inclusão de um novo Fornecedor?", "Inclusão de Fornecedor", MessageBoxButtons.YesNo);
            if (dialogResult == DialogResult.Yes)
            {
                limpaTelaCadastro();
                habilitaBotoes();
                desabilitaTelaCadastro();
                tabControl1.SelectedTab = tabPage1;
            }
            else
            {
            }
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = MessageBox.Show("Deseja realmente excluir este fornecedor?", "Exclusão", MessageBoxButtons.YesNo);
            if (dialogResult == DialogResult.Yes)
            {
                bool retorno = f._ApagaFornecedor(Convert.ToInt32(GridViewFornecedor.CurrentRow.Cells[0].Value));
                if (retorno == true)
                {
                    MessageBox.Show("Fornecedor Excluido com sucesso");
                    GridViewFornecedor.DataSource = f._ListaFornecedor();
                }
                else
                {
                    MessageBox.Show("Houve problema no momento da exclusão, por favor contate o Administrador");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
                MessageBox.Show("Fornecedor não foi excluido");
            }
        }

        private void GridViewFornecedor_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            carregaTelaCadastroFornecedor();
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void GridViewFornecedor_SelectionChanged(object sender, EventArgs e)
        {
            carregaTelaCadastroFornecedor();
        }
    }
}
